package com.sicnu.resources.service;



import com.sicnu.resources.bean.entity.Resource;
import com.sicnu.resources.bean.req.resource.ResourcePageReq;
import com.sicnu.resources.bean.res.Result;

import java.util.List;

/**
 * 资源服务接口
 * @author 怨九己
 */
public interface ResourceService {

    /**
     * 根据 resourceId 查询资源
     * @param resourceId 资源ID
     * @return 资源对象
     */
    Resource findById(Integer resourceId);

    /**
     * 保存资源
     * @param resource 资源对象
     * @return 是否保存成功
     */
    Result<String> save(Resource resource);

    /**
     * 删除资源
     * @param resourceId 资源ID
     * @return 是否删除成功
     */
    Result<String> delete(Integer resourceId);

    /**
     * 根据资源名称和标签搜索资源（支持分页）
     * @param resourceName 资源名称
     * @param tag 标签
     * @param pageReq 分页请求参数
     * @return 资源列表和总数
     */
    Result<List<Resource>> searchResourcesByName(
            String resourceName,
            String tag,
            ResourcePageReq pageReq);

    /**
     * 更新资源（只允许修改 resourceType, resourceDescription, 和 tag）
     * @param resourceId 资源ID
     * @param resourceUpdate 资源更新对象
     * @return 更新后的资源对象
     */
    Resource updateResource(
            Integer resourceId,
            Resource resourceUpdate);

    /**
     * 分页查询资源
     * @param pageReq 分页请求参数
     * @return 资源列表和总数
     */
    Result<List<Resource>> queryPage(
            ResourcePageReq pageReq);
}